"""
多个装饰器装饰1个函数，细节如下：
    多个装饰器装饰1个函数，装饰的顺序是由最贴近函数的那个开始，自下而上（执行顺序）
"""
# 需求：发表评论之前，需要先登录、在进行验证码验证，在不改变原有函数的基础上，对功能进行增强
# 1: 定义装饰器。加入：登录的功能 登录-》验证码-》发表评论
def check_login(fn_name):       #有外部函数
    # 定义内部函数，用于对指定的fn_name函数功能做增强。
    def inner():                #有内部函数
        print("登录中...") #有额外功能
        fn_name()               #有引用

    return inner                #有返回

# 2: 定义装饰器。加入：验证码的功能
def check_code(fn_name):       #有外部函数
    # 定义内部函数，用于对指定的fn_name函数功能做增强。
    def inner():                #有内部函数
        print("验证码验证中...") #有额外功能
        fn_name()               #有引用

    return inner                #有返回

# 3：定义被装饰的函数【自上而下】
@check_login
@check_code
def comment():
    print("发表评论...")

# if __name__ == '__main__':
#     # 写法1：传统的写法【自下而上】
#     code = check_code(comment)
#     login = check_login(code)
#     login()
#
#     print("-" * 50)
#     # 写法2：语法糖
#     # comment()